awk '# factorial: return factorial of user-supplied number
BEGIN {
	# prompt user; use printf, not print, to avoid the newline
	printf("Enter number: ")
}

# check that user enters a number
$1 ~ /^[0-9]+$/ { 
	# assign value of $1 to number & fact
	number = $1
	if (number == 0)
		fact = 1
	else
		fact = number
	# loop to multiply fact*x until x = 1
	for (x = number - 1; x > 1; x--)
		fact *= x
	printf("The factorial of %d is %g\n", number, fact)
	# exit -- saves user from typing CRTL-D.
	exit
}

# if not a number, prompt again.
{ printf("\nInvalid entry. Enter a number: ") 
}' -
